Dell 如何从 SUSE Linux 迁移到 Oracle Linux


作者:Jon Senger、Aik Zu Shyong 和 Suzanne Zorn

本文介绍 Dell 公司如何成功计划并实施了此次迁移,文中指出关键转换问题并概要介绍迁移过程。



2012 年 1 月发布
Dell 徽标
Oracle 徽标


即使在单台服务器上切换底层操作系统也非小事一桩。处理相关的转换和兼容性问题同样如此。想像一下在一家企业遍布全球的数千台服务器上切换操作系统(就像 Dell 刚刚做的那样)所涉及到的问题吧。

如果想要下载软件、加入论坛、阅读类似本文的内容之外的其他技术方法精品文章,请成为 OTN 成员。无垃圾邮件!

2010 年 6 月,Dell 公司决定将 1,700 个系统从 SUSE Linux 迁移到 Oracle Linux,同时保持硬件层和应用程序层不变。对此,跨 Linux 平台的标准化发挥了作用,使这一大规模转换成为可能。在这一过程中,只需对大多数与各地使用情况有关的操作系统和应用程序配置进行备份,然后在新的操作系统上直接恢复即可。配置更改的量极小,且大多数可以自动进行,从而减轻了管理员的工作量并且有助于实现可靠、一致的迁移过程。

Dell 的部署环境

在此迁移过程开始时,Dell 有大约 1,700 个物理系统运行 SUSE Linux。这些地理上分散于全球各地的系统使用的既有第八代服务器(Dell PowerEdge 2850 和 2950 服务器)也有更新的 Dell 硬件。光纤通道 SAN 存储包括 EMC Symmetrix 和 CLARiiON 设备。软件环境包括带多路径 I/O (MPIO) 的 SUSE Linux 10 Service Pack 1、Oracle Database 10g 第 2 版、Oracle Real Application Clusters (Oracle RAC) 和 Oracle 自动存储管理,如图 1 所示。

Dell Linux 图

图 1. 迁移到 Oracle Linux 之前和之后的 Dell 部署环境

迁移主要涉及将操作系统从 SUSE Linux 10 迁移到 Oracle Linux 5.5。在迁移过程中保留原先的物理服务器和存储硬件。同样,Oracle 软件在迁移之后保持不变。Dell 的另一个变化是从 SUSE Linux 的内置多路径 I/O 支持转换到 EMC PowerPath 以便自动进行数据路径管理。(注意:从 MPIO 到 PowerPath 的实际转换与操作系统迁移基本无关,因而不在本文讨论范围之内。)

此迁移过程同时也让 Dell 借机重新评估其运行 SUSE Linux 的服务器,以确定是否可停用这些服务器上运行的应用程序或将其部署在现有 MegaGrid 环境上。Dell 对于其 MegaGrid 部署使用 16 节点机架,每个机架可容纳 300 个数据库。有些情况下,现有 MegaGrid 基础架构上有足够的容量,因而能够将应用程序和数据库迁移到该网格,并关闭和停用 SUSE Linux 服务器。这样的整合节省了电力和冷却消耗、减小了空间占用。在整合不可行的其他情况下,使用本文描述的过程将 SUSE Linux 系统迁移到了 Oracle Linux。


迁移过程

鉴于迁移规模庞大,计划和自动化对于项目的成功至关重要。Dell 核心设计小组的 Aik Zu Shyong 回忆:“我们将重心放在对操作系统转换的设计上,这样确保我们可以提供简单、可靠、可重复的自动化过程。此外,通过设计采用就地完成迁移的方法,而不是采用慢得多且成本高昂的替代方法,我们成功地进一步缩短了停机时间并节省了数据中心空间。”

Dell 的迁移过程主要包括三个步骤:准备、操作系统重映像和安装后配置。首先,在准备步骤中,Dell 保存了现有环境的配置并安全地关闭了应用程序和数据库。然后,他们将操作系统从 SUSE Linux 10 重映像到 Oracle Linux 5.5。重映像完成之后,他们使用安装后步骤对新的环境进行了配置并恢复了先前的数据。

准备

Dell 通过执行以下安装前步骤做好从 SUSE Linux 迁移到 Oracle Linux 的准备。

  1. 首先,Dell 创建一个暂存区域来保存各种配置文件。为与 Oracle Linux 操作系统兼容,Dell 创建了一个 ext3 文件系统,而不是 SUSE Linux 10 默认的 ReiserFS 文件系统,并记录此暂存文件系统的位置以便迁移后使用。根据系统配置,Dell 使用附属光纤通道存储设备上的备用卷或计算机上的备用驱动器来存储文件。

    暂存区域的大小随特定系统配置而不同,取决于需要备份的最大数据块:ORACLE_HOME 目录。他们保留了足够的空间来容纳此目录以及需要备份的各种系统配置文件。
     
  2. 随后,Dell 关闭系统上的应用程序和服务并禁用 init.d 进程。Dell 按照 Oracle 建议的关闭顺序停止了 Oracle Database、Oracle 自动存储管理、集群节点上运行的应用程序以及 Cluster Ready Services (CRS)。并且使用 chkconfig 命令禁用了正在运行的服务:
    # chkconfig service_name off
    

    对于 Dell 的迁移,被迁移的系统的服务类别影响到了关闭过程。对于非关键系统,需使用系统维护窗口,关闭整个集群,迁移到 Oracle Linux,然后重新启动。对于运行关键业务应用程序的系统,则避免关闭所有服务。在这样的情况下使用了滚动升级。服务从一个选定集群节点迁移到集群中的另一个节点上,然后将该选定节点迁移到 Oracle Linux。之后,该集群节点重新启动并重新加入集群。此过程重复进行,直至集群中所有节点升级完毕。

    注意:虽然 Oracle 不支持异构 Oracle RAC 集群,但 Dell 在转换中没有遇到任何问题,运行 SUSE Linux 的节点与运行 Oracle Linux 的节点可以交互操作。不过,他们只是在迁移过程中使用了这种混合操作系统配置,在一般系统操作中并没有使用。  
     
  3. Dell 确认文件系统未在使用中。Dell 使用 lsof 命令列出任何打开的文件并确保所有 NFS 挂载均未使用。他们还确认 ORACLE_HOME 目录不存在资源使用情况。
    # lsof
    
  4. Dell 对相关操作系统配置文件和目录进行存档。Dell 使用表 1 作为参考,对系统配置进行了存档并收集了需要保留的操作系统文件列表,以便在 Oracle Linux 安装后恢复与各地使用情况有关的配置。Dell 首先找出其因地制宜的配置文件,然后创建一个脚本,该脚本可用于将这些文件复制到第 1 步中创建的暂存位置。

    注意:此表仅作参考,不是确切文件和文件位置的确定指南。因地制宜,该信息可能不同。

    表 1. 操作系统配置信息
    存档步骤说明
    硬件信息使用 Dell OpenManage Server Administrator (OMSA) 或原生 Linux 命令对硬件信息进行存档;保存到文件(如 hardware.txt
    网卡信息存档 IP 地址、子网和网关信息、MAC 地址、链路速度/双工信息以及网络绑定配置;保存到文件(如 network.txt
    内存信息(可选)对内存使用记录进行存档;如果需要,使用最多一周的快照以证明性能等同或更好;保存到文件(如 memory.txt
    操作系统 *-release 文件/etc/SuSE-release
    内核模块信息/lib/modules/*/etc/{modprobe.conf、modprobe.conf.local、modprobe.d/*}
    身份验证 (PAM)、用户和组,以及 nsswitch.conf/etc/pam.d/*/etc/nsswitch.conf/etc/passwd/etc/shadow/etc/group/etc/sudoers/etc/security/*
    设备管理器 (udev) 规则/etc/udev/udev.conf/etc/udev/rules.d/*
    自动挂载文件系统信息/etc/auto.*(可选;仅当使用自动挂载时需要)
    引导加载程序配置文件/boot/grub/*/etc/grub.conf/etc/sysconfig/bootloader
    /var/log/messages 文件/var/log/{boot.msg、boot.omsg、localmessages、messages}
    运行级别配置/etc/inittab/etc/init.d/boot.local
    rclocal 脚本/etc/rc.d/rclocal
    Cron 作业配置/etc/cron/{daily、hourly、monthly}/*/var/spool/cron/tabs/*
    MPIO 配置/etc/multipath.conf
    网络配置(NIC、路由等)/etc/sysconfig/network/ifcfg-*/etc/sysconfig/network/*/etc/resolv.conf
    NTP 配置/etc/ntp.conf
    NFS 配置/etc/exports/etc/fstab
    名称服务配置/etc/nscd.conf
    主机配置/etc/{hosts、host.conf、hosts.allow、hosts.deny、HOSTNAME}
    系统配置 (sysconfig)/etc/sysconfig/*(包括所有子目录)、/etc/sys/*(包括所有子目录)
    /proc/info 文件/proc/*(包括所有子目录)
    SSH 配置/etc/ssh/*/etc/sshd.config/etc/pam.d/ssh
    SAR 数据文件/var/log/sa/sa*
    Apache 配置文件可选(仅当运行 Apache 时需要);
    /etc/httpd*
    FTP可选;(仅当运行 FTP 服务时需要)
    CIFS可选;(仅当运行 CIFS 服务时需要)
    Shell/配置文件信息/etc/{bash.bashrc、csh.cshrc、csh.login、ksh.kshrc}/etc/profile/etc/profile.d/*
    登录前消息/etc/issue
    /etc/default 目录文件/etc/default/*
    PowerPath 许可和配置文件/etc/emcp*
    其他软件/应用程序备份任何第三方非 Oracle 软件应用程序

     
  5. Dell 将 MPIO 转换为 PowerPath。Dell 选择从 SUSE Linux 的内置 MPIO 支持转换为 EMC PowerPath 以便自动进行数据路径管理,因为这是 Dell 针对其他非 SUSE Linux 系统的标准。使用 EMC PowerPath 还使得转换后可以更轻松地通过 LUN 映射进行复制。

    EMC 编写了一个自定义脚本以执行从 MPIO 到 PowerPath 的转换。此转换步骤的详细信息不在本文讨论范围之内。如果需要,有关转换数据路径管理的更多信息,建议读者向 EMC 或其存储提供商咨询。
     
     
  6. Dell 对 Oracle 特定的配置信息进行存档。类似于操作系统配置文件,Dell 将这些 Oracle 特定的配置文件存储在附属光纤通道存储设备的备用卷或计算机上的备用驱动器上。表 2 列出了 Dell 为准备迁移到 Oracle Linux 而保存的 Oracle 特定的配置文件。

    表 2. Oracle 特定的配置
    存档步骤说明
    oraclesvcgrid 用户的配置文件oraclesvcgrid 用户的 .profile 文件(注意:Oracle Linux 文件命名为 .bash_profile
    LUN 映射信息/u02(此目录包含 SUSE Linux 环境中 LUN 映射的符号链接)
    Oracle Inventory Pointer (oraInst.loc) 和 oratab 文件/etc/oraInst.loc/etc/oratab
    Oracle 清单文件 (oraInventory)/etc/oracle/oraInventory
    OCR 文件/etc/oracle/ocr.loc
    oracle 用户的 SSH 可信密钥~oracle/.ssh/*
    数据库特定的内核设置/etc/sysctl.conf
    oracle 用户的主目录因地制宜;Dell 配置使用 /home/oracle
    Oracle 软件的主目录 (ORACLE_BASE)因地制宜;Dell 配置使用 /u01/app/oracle
  7. 最后,Dell 使用 tar 实用程序创建保存的配置文件的备份映像。

     

操作系统重映像

保存配置信息并将所有基本服务转移到备份服务器之后,系统就做好准备可以安装新的 Oracle Linux 操作系统了。Dell 使用 kickstart 安装方法自动执行跨网络的 Oracle Linux 5.5 操作系统安装。使用 kickstart 方法有助于确保在客户端系统上进行快速、高效、一致的操作系统安装。

Dell 使用了标准 kickstart 配置和安装,并且使用网络上的一台中央 kickstart 服务器以便进行安装。他们将 Oracle Linux 5.5 的 ISO 映像复制到 Dell 区域映像服务器并且让这些映像可通过网络来访问。他们创建了一个 kickstart 配置文件,其中指定了 kickstart 选项和要安装的程序包。客户端计算机使用 USB 闪存驱动器进行引导,并下载该 kickstart 配置文件。安装是自动进行的,无需用户干预就完成了。

注意:确保安装过程不会擦除用于存储存档系统信息的备份磁盘。Dell 的 kickstart 过程具体来说只使用了 /dev/sda 磁盘,而保留 /dev/sdb 用于安全地存档备份信息。

安装后

以下关键步骤是 Dell 迁移到 Oracle Linux 的安装后过程的一部分:

  1. Dell 将操作系统配置文件从 SUSE Linux 恢复/转换到 Oracle Linux。Dell 恢复所保存的操作系统配置信息(参见表 1),以实现从 SUSE Linux 到 Oracle Linux 的迁移。大多数配置文件可以直接从备份副本恢复,不需要任何转换。未直接恢复的设置包括:

    • Ioscheduler 信息。因为 Oracle Linux 的 grub.conf 文件不同,所以不能直接复制对应的 SUSE Linux 文件。而是在新的 Oracle Linux /boot/grub/grub.conf 配置文件中为首选 ioscheduler 添加一个条目,例如:

      kernel KERNEL_PARAMETERS elevator=deadline
            
    • 口令信息。因为 SUSE Linux 环境使用 Blowfish 而新的 Oracle Linux 环境使用 MD5 加密哈希函数,因此不能直接复制 /etc/passwd/etc/shadow 文件中的加密口令信息。而是手动恢复了几个本地用户帐户(如 oracle 用户)的口令。
       
    • ssh 的主机密钥。安装新的 Oracle Linux 操作系统后,ssh 后台程序返回的主机密钥已改变。因此为集群中的主机重新生成了 ssh 客户端访问所需的新的 known_hosts 密钥文件。

      注意:尽管 Dell 选择生成了新的客户端密钥,但也可能从备份恢复旧的主机密钥。

    • 网络绑定配置。SUSE Linux 通过 ifcfg-bondN 配置文件直接加载绑定内核模块。与之不同的是,Oracle Linux 使用 /etc/modprobe.conf 文件加载绑定内核模块及其选项。因此,在新的 Oracle Linux /etc/modprobe.conf 文件中添加了条目以加载绑定内核模块并设置选项,例如:

      alias bond0 bonding
      options bond0 mode=active-backup miimon=100 downdelay=100 updelay=200
            

      SUSE Linux 和 Oracle Linux 都将网络设备信息存储在 ifcfg-bondNethN 文件中。但 SUSE Linux 将这些文件存储在 /etc/sysconfig/network 目录中,而 Oracle Linux 使用 /etc/sysconfig/network-scripts 目录。表 3 显示先前的 SUSE Linux 环境和新的 Oracle Linux 环境的示例 ifcfg-bondN 文件。

      表 3. 示例 ifcfg-bondN 文件
      SUSE LinuxOracle Linux
      /etc/sysconfig/network/ifcfg-bond1/etc/sysconfig/network-scripts/ifcfg-bond0
      DEVICE=bond1
      BOOTPROTO='static'
      BROADCAST='192.168.255.255'
      IPADDR='192.168.0.190'
      NETMASK='255.255.0.0'
      NETWORK='192.168.0.0'
      REMOTE_IPADDR=''
      MTU=''
      STARTMODE='onboot'
      BONDING_MASTER='yes'
      BONDING_SLAVE_0='eth2'
      BONDING_SLAVE_1='eth3'
      BONDING_MODULE_OPTS='mode=active-backup 
      miimon=100 downdelay=100 updelay=200'
                    
      DEVICE=bond0
      BOOTPROTO=none
      ONBOOT=yes
      IPADDR='192.168.0.190'
      NETMASK=255.255.0.0
      NETWORK=192.168.0.0
      USERCTL=no
                    

      表 4 显示先前的 SUSE Linux 环境和新的 Oracle Linux 环境的示例 ifcfg-eth2 文件。

      表 4. 示例 ifcfg-eth2 文件
      SUSE LinuxOracle Linux
      /etc/sysconfig/network/ifcfg-eth2/etc/sysconfig/network-scripts/ifcfg-eth2
      DEVICE=eth2
      STARTMODE='onboot'
      BOOTPROTO='none'
      MASTER='bond1'
      SLAVE='yes'
                    
      DEVICE=eth2
      HWADDR=00:15:17:97:CD:4E
      BOOTPROTO=none
      ONBOOT=yes
      MASTER=bond0
      SLAVE=yes
      USERCTL=no
                    

      有关如何在 Oracle Linux 系统上配置网络绑定的更多完整详细信息,请参考 Oracle Linux 系统管理文档。

       

  2. Dell 恢复 Oracle 配置设置和文件。Dell 恢复保存的 Oracle 特定的配置信息(参见上一节中的表 2)以实现从 SUSE Linux 到 Oracle Linux 的迁移。与操作系统配置文件一样,大多数 Oracle 特定的配置文件可以直接从备份副本恢复,不需要任何转换。配置文件和 inittab 文件中的 Oracle 启动脚本是两个例外。

     

    • 配置文件。SUSE Linux 使用 .profile 文件,而 Oracle Linux 使用 .bash_profile 文件。因此,他们将 oraclesvcgrid 用户的 .profile 文件复制到新 Oracle Linux 环境中的 .bash_profile 文件。
       
    • inittab 文件。这两个操作系统的 inittab 文件不同。因此,他们将 Oracle 软件的三个启动脚本的条目复制到新的 inittab 文件,而不是直接整个复制 inittab 文件。

      原始 SUSE Linux inittab 文件中相关的三行,即 Event Manager 后台程序 (evmd)、Oracle Cluster Services Synchronization 后台程序 (cssd) 和 Cluster Ready Services 后台程序 (crsd) 的条目,从存档文件复制出来并添加到新的 Oracle Linux inittab 文件的末尾,例如:

      # Run xdm in runlevel 5
      x:5:respawn:/etc/X11/prefdm -nodaemon
      h1:35:respawn:/etc/init.d/init.evmd run >/dev/null
      2>&1 </dev/null h2:35:respawn:/etc/init.d/init.cssd fatal
      >/dev/null 2>&1 </dev/null h3:35:respawn:/etc/init.d/init.crsd run >/dev/null
      2>&1 </dev/null
  3. Dell 重新启动服务器。
     
  4. Dell 然后重新启动数据库并确认其工作正常。此外,还验证了第三方软件产品。

    注意:作为最佳实践,在安装新操作系统后可能需要重新链接 Oracle 产品可执行文件。有关详细信息,请参考 My Oracle Support 上的 How to Relink Oracle Software on Unix [ID 131321.1](需要有效客户支持标识 [CSI] 才可查看)。

总结

将 1,700 台服务器从 SUSE Linux 迁移到 Oracle Linux 是一项雄心勃勃的 IT 决策,也是一项必需的决策。Dell 认为,为了获得更好的稳定性和支持、更轻松的管理和更低的成本,他们必需进行这样的决策。Dell 之所以能够在提取并更换底层操作系统层的同时保持应用程序层不变,这完全要归功于跨 Linux 平台的标准化。只需对大多数与各地使用情况有关的操作系统配置进行备份,然后在新的操作系统上直接恢复即可。类似地,Oracle Database 和其他应用程序只需少量配置更改即可从 SUSE Linux 迁移到 Oracle Linux。

在 2011 年 12 月撰写本文时,Dell 大约完成了一半的迁移过程,预计完成日期为 2012 年 6 月。他们在开始迁移之前进行了周密的计划,逐项明确了所需的与各地使用情况有关的配置文件并找出了需要转换的文件,这是 Dell 取得成功的关键。他们通过脚本和 kickstart 安装实现自动化,并且在实际转换过程中通过检查清单注意细节,从而降低了风险并保障了迁移过程中的一致性。

Dell 确信将这些服务器从 SUSE Linux 迁移到 Oracle Linux 的决策是一项有利于其业务的正确决策。Dell 企业架构师 Jon Senger 说,“我们进行一项这么大规模的、具有如此挑战性基础架构的迁移,确实有风险,但非常值得。我们不仅降低了环境 TCO,而且由于我们已经能够在 Oracle Linux 上进行标准化,我们实现了客户所要求的稳定性和支持。”

资源

以下是可用于 Oracle Linux 的资源:

下载 Oracle Linux:

关注 Oracle Linux:

通过 FacebookTwitterOracle 博客关注我们。